<HTML>
<HEAD>
<TITLE>
HojaArbolB.cpp
</TITLE>
</HEAD>
<BODY>
<PRE>
<font color="blue">#include</font> <font color="maroon">"HojaArbolB.h"</font>

<font color="blue">void</font> HojaArbolB<font color="black">:</font><font color="black">:</font>BajarMayor<font color="black">(</font>Informacion <font color="black">*</font>dato<font color="black">)</font>
<font color="black">{</font>
    informacion.push_back<font color="black">(</font>dato<font color="black">)</font>;
<font color="black">}</font>



<font color="blue">void</font> HojaArbolB<font color="black">:</font><font color="black">:</font>BajarMenor<font color="black">(</font>Informacion <font color="black">*</font>dato<font color="black">)</font>
<font color="black">{</font>
    informacion.insert<font color="black">(</font>informacion.begin<font color="black">(</font><font color="black">)</font>,dato<font color="black">)</font>;
<font color="black">}</font>



<font color="blue">void</font> HojaArbolB<font color="black">:</font><font color="black">:</font>SubirMayor<font color="black">(</font>Informacion<font color="black">*</font> <font color="black">&</font>dato<font color="black">)</font>
<font color="black">{</font>
    <font color="blue">if</font><font color="black">(</font>informacion.size<font color="black">(</font><font color="black">)</font><font color="black">=</font><font color="black">=</font><font color="maroon">0</font><font color="black">)</font>
    <font color="black">{</font>
        dato<font color="black">=</font>NULL;
        <font color="blue">return</font>;
    <font color="black">}</font>
    dato<font color="black">=</font>informacion<font color="black">[</font>informacion.size<font color="black">(</font><font color="black">)</font><font color="maroon">-1</font><font color="black">]</font>;
    informacion.pop_back<font color="black">(</font><font color="black">)</font>;

<font color="black">}</font>



std<font color="black">:</font><font color="black">:</font>vector<font color="black">&#60;</font>Informacion<font color="black">*</font><font color="black">&#62;</font> HojaArbolB<font color="black">:</font><font color="black">:</font>Buscar<font color="black">(</font>Clave<font color="black">*</font> dato<font color="black">)</font>
<font color="black">{</font>
    std<font color="black">:</font><font color="black">:</font>vector<font color="black">&#60;</font>Informacion<font color="black">*</font><font color="black">&#62;</font> datos;
    <font color="blue">int</font> i;
    <font color="blue">for</font><font color="black">(</font> i<font color="black">=</font><font color="maroon">0</font>; <font color="black">(</font><font color="blue">unsigned</font> <font color="blue">int</font><font color="black">)</font>i <font color="black">&#60;</font> informacion.size<font color="black">(</font><font color="black">)</font>;  i<font color="black">+</font><font color="black">+</font><font color="black">)</font>
    <font color="black">{</font>

        <font color="blue">if</font><font color="black">(</font>dato<font color="black">-</font><font color="black">&#62;</font>Comparar<font color="black">(</font>informacion<font color="black">[</font>i<font color="black">]</font><font color="black">)</font><font color="black">=</font><font color="black">=</font><font color="maroon">0</font><font color="black">)</font>
        <font color="black">{</font>
            datos.push_back<font color="black">(</font>informacion<font color="black">[</font>i<font color="black">]</font><font color="black">)</font>;
        <font color="black">}</font>
    <font color="black">}</font>


    <font color="blue">return</font> datos;
<font color="black">}</font>

HojaArbolB<font color="black">:</font><font color="black">:</font>~HojaArbolB<font color="black">(</font><font color="black">)</font>
<font color="black">{</font>
    <font color="blue">for</font><font color="black">(</font>std<font color="black">:</font><font color="black">:</font>vector<font color="black">&#60;</font>Informacion<font color="black">*</font><font color="black">&#62;</font><font color="black">:</font><font color="black">:</font>iterator it<font color="black">=</font>informacion.begin<font color="black">(</font><font color="black">)</font>; it <font color="black">!</font><font color="black">=</font> informacion.end<font color="black">(</font><font color="black">)</font>; <font color="black">+</font><font color="black">+</font>it<font color="black">)</font>
    <font color="black">{</font>
        <font color="blue">delete</font> <font color="black">*</font>it;
    <font color="black">}</font>

<font color="black">}</font>



<font color="blue">bool</font> HojaArbolB<font color="black">:</font><font color="black">:</font>Ingresar<font color="black">(</font>Informacion <font color="black">*</font>dato<font color="black">)</font>
<font color="black">{</font>
    <font color="blue">bool</font> <font color="blue">error</font><font color="black">=</font><font color="blue">false</font>;
    <font color="blue">int</font> i;
    <font color="blue">for</font><font color="black">(</font> i<font color="black">=</font><font color="maroon">0</font>; <font color="black">(</font><font color="blue">unsigned</font> <font color="blue">int</font><font color="black">)</font>i <font color="black">&#60;</font> informacion.size<font color="black">(</font><font color="black">)</font>;  i<font color="black">+</font><font color="black">+</font><font color="black">)</font>
    <font color="black">{</font>
        <font color="blue">if</font><font color="black">(</font>dato<font color="black">-</font><font color="black">&#62;</font>Comparar<font color="black">(</font>informacion<font color="black">[</font>i<font color="black">]</font><font color="black">)</font><font color="black">&#60;</font><font color="maroon">0</font><font color="black">)</font>
        <font color="black">{</font>
            <font color="green">//salgo cuando encuentro la primer clave menor</font>
            <font color="blue">break</font>;
        <font color="black">}</font>

        <font color="blue">if</font><font color="black">(</font>dato<font color="black">-</font><font color="black">&#62;</font>Comparar<font color="black">(</font>informacion<font color="black">[</font>i<font color="black">]</font><font color="black">)</font><font color="black">=</font><font color="black">=</font><font color="maroon">0</font><font color="black">)</font>
        <font color="black">{</font>
            <font color="blue">throw</font> IndexException<font color="black">(</font><font color="black">)</font>;
        <font color="black">}</font>
    <font color="black">}</font>

    <font color="green">//lo agrego al siguiente</font>
    <font color="blue">if</font><font color="black">(</font>informacion.size<font color="black">(</font><font color="black">)</font><font color="maroon">-1</font><font color="black">&#60;</font> <font color="black">(</font><font color="blue">unsigned</font> <font color="blue">int</font><font color="black">)</font>i<font color="black">)</font>
        informacion.push_back<font color="black">(</font> <font color="blue">new</font> Informacion<font color="black">(</font><font color="black">*</font>dato<font color="black">)</font><font color="black">)</font>;

    <font color="blue">error</font><font color="black">=</font> informacion.size<font color="black">(</font><font color="black">)</font><font color="black">=</font><font color="black">=</font><font color="black">(</font><font color="blue">unsigned</font> <font color="blue">int</font><font color="black">)</font>cantidadClaves<font color="black">+</font><font color="maroon">1</font>;

    <font color="blue">return</font> <font color="blue">error</font>;

<font color="black">}</font>

<font color="blue">bool</font> HojaArbolB<font color="black">:</font><font color="black">:</font>EsHoja<font color="black">(</font><font color="black">)</font>
<font color="black">{</font>
    <font color="blue">return</font> <font color="blue">true</font>;
<font color="black">}</font>



<font color="blue">bool</font> HojaArbolB<font color="black">:</font><font color="black">:</font>Quitar<font color="black">(</font>Informacion <font color="black">*</font>dato<font color="black">)</font>
<font color="black">{</font>
    <font color="blue">bool</font> <font color="blue">error</font><font color="black">=</font><font color="blue">false</font>, encontrado<font color="black">=</font><font color="blue">false</font>;
    <font color="blue">int</font> i;
    <font color="blue">for</font><font color="black">(</font> i<font color="black">=</font><font color="maroon">0</font>; <font color="black">(</font><font color="blue">unsigned</font> <font color="blue">int</font><font color="black">)</font>i <font color="black">&#60;</font> informacion.size<font color="black">(</font><font color="black">)</font>;  i<font color="black">+</font><font color="black">+</font><font color="black">)</font>
    <font color="black">{</font>
        <font color="blue">if</font><font color="black">(</font>dato<font color="black">-</font><font color="black">&#62;</font>Comparar<font color="black">(</font>informacion<font color="black">[</font>i<font color="black">]</font><font color="black">)</font><font color="black">=</font><font color="black">=</font><font color="maroon">0</font><font color="black">)</font>
        <font color="black">{</font>
            <font color="green">//salgo cuando encuentro la primer clave menor</font>
            encontrado<font color="black">=</font><font color="blue">true</font>;
            <font color="blue">break</font>;
        <font color="black">}</font>
    <font color="black">}</font>

    <font color="green">//lo quito del siguiente</font>
    <font color="blue">if</font><font color="black">(</font>encontrado<font color="black">)</font>
        informacion.erase<font color="black">(</font>informacion.begin<font color="black">(</font><font color="black">)</font><font color="black">+</font>i<font color="black">)</font>;


    <font color="blue">error</font><font color="black">=</font> informacion.size<font color="black">(</font><font color="black">)</font><font color="black">&#60;</font> <font color="black">(</font><font color="blue">unsigned</font> <font color="blue">int</font><font color="black">)</font><font color="black">(</font>cantidadClaves <font color="black">*</font> <font color="maroon">2</font><font color="black">/</font><font color="maroon">3</font><font color="black">)</font>;

    <font color="blue">return</font> <font color="blue">error</font>;
<font color="black">}</font>



<font color="blue">void</font> HojaArbolB<font color="black">:</font><font color="black">:</font>MayorClave<font color="black">(</font>Clave<font color="black">*</font> <font color="black">&</font>dato<font color="black">)</font>
<font color="black">{</font>
    dato<font color="black">=</font>informacion<font color="black">[</font>informacion.size<font color="black">(</font><font color="black">)</font><font color="maroon">-1</font><font color="black">]</font><font color="black">-</font><font color="black">&#62;</font>GetClave<font color="black">(</font><font color="black">)</font>;
<font color="black">}</font>

HojaArbolB<font color="black">:</font><font color="black">:</font>HojaArbolB<font color="black">(</font><font color="blue">int</font> cantidadClaves<font color="black">)</font><font color="black">:</font> ComponenteArbolB<font color="black">(</font>cantidadClaves<font color="black">)</font>
<font color="black">{</font>
    <font color="blue">for</font><font color="black">(</font>std<font color="black">:</font><font color="black">:</font>vector<font color="black">&#60;</font>Informacion<font color="black">*</font><font color="black">&#62;</font><font color="black">:</font><font color="black">:</font>iterator it<font color="black">=</font>informacion.begin<font color="black">(</font><font color="black">)</font>; it <font color="black">!</font><font color="black">=</font> informacion.end<font color="black">(</font><font color="black">)</font>; <font color="black">+</font><font color="black">+</font>it<font color="black">)</font>
    <font color="black">{</font>
        <font color="black">*</font>it<font color="black">=</font>NULL;
    <font color="black">}</font>

<font color="black">}</font>



<font color="blue">void</font> HojaArbolB<font color="black">:</font><font color="black">:</font>SubirMenor<font color="black">(</font>Informacion <font color="black">*</font><font color="black">&</font> dato<font color="black">)</font>
<font color="black">{</font>
    <font color="blue">if</font><font color="black">(</font>informacion.size<font color="black">(</font><font color="black">)</font><font color="black">=</font><font color="black">=</font><font color="maroon">0</font><font color="black">)</font>
    <font color="black">{</font>
        dato<font color="black">=</font>NULL;
        <font color="blue">return</font>;
    <font color="black">}</font>
    dato<font color="black">=</font>informacion<font color="black">[</font><font color="maroon">0</font><font color="black">]</font>;
    informacion.erase<font color="black">(</font>informacion.begin<font color="black">(</font><font color="black">)</font><font color="black">)</font>;
<font color="black">}</font>


</PRE>
</BODY>
</HTML>
